home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / games / cs / cs_boot.s < prev    next >
Text File  |  1999-06-15  |  3KB  |  164 lines

  1. ;----------------------------------------------------------------
  2. ;
  3. ;    『「クリオスサイト」体験版2』ブートプログラム
  4. ;        CS_BOOT.X v1.01 (1999.06.15) by M.Kamada
  5. ;
  6. ;----------------------------------------------------------------
  7. ;
  8. ;    ・設定とスコアを CD-ROM に書き込もうとして「書き込み不可能で
  9. ;     す」の白帯が出るのを回避する。
  10. ;
  11. ;----------------------------------------------------------------
  12.  
  13.     .include    doscall.mac
  14.     .include    iocscall.mac
  15.  
  16. ;----------------------------------------------------------------
  17. ;バージョン定義
  18. PROGNAME    reg    'CS_BOOT'
  19. LOWER_PROGNAME    reg    'cs_boot'
  20. VERSION        reg    '1.01'
  21. DATE        reg    '1999.06.15'
  22.  
  23. ;----------------------------------------------------------------
  24. ;定数
  25. OPCODE_PEA_DPC        equ    %0100_100_001_111_010
  26. OPCODE_BRA_W        equ    %0110_0000_00000000
  27.  
  28. ;----------------------------------------------------------------
  29. ;MPUが68000かどうか調べる
  30. ;>dn.l:0=68000,1=68000以外
  31. ;>z-flag:eq=68000,ne=68000以外
  32. IS68000    .macro    dn
  33.     .cpu    68020
  34. @base:
  35.     moveq.l    #1,dn
  36.     and.b    (@base-1,pc,dn.l*2),dn
  37.     .cpu    68000
  38.     .endm
  39.  
  40. ;----------------------------------------------------------------
  41. ;実行開始位置
  42.     .text
  43. exec_entry:
  44.     lea.l    (16,a0),a0
  45.     suba.l    a0,a1
  46.     movem.l    a0-a1,-(sp)
  47.     DOS    _SETBLOCK
  48.     addq.l    #8,sp
  49.  
  50.     lea.l    stack_top,sp
  51.  
  52.     lea.l    execparam-8,a0
  53.     subq.l    #8,a2
  54.     moveq.l    #8+1-1,d0
  55. @@:    move.b    (a2)+,(a0)+
  56.     dbra    d0,@b
  57.     movea.l    a2,a1
  58.     bsr    strcpy
  59.  
  60.     lea.l    (filename,pc),a1
  61.     lea.l    execname,a0
  62.     bsr    strcpy
  63.  
  64.     clr.l    -(sp)
  65.     pea.l    execparam
  66.     pea.l    execname
  67.     move.w    #2,-(sp)
  68.     DOS    _EXEC
  69.     lea.l    (14,sp),sp
  70.     move.l    d0,d7
  71.     bmi    main_exit
  72.  
  73.     clr.l    -(sp)
  74.     pea.l    execparam
  75.     pea.l    execname
  76.     move.w    #1,-(sp)
  77.     DOS    _EXEC
  78.     lea.l    (14,sp),sp
  79.     move.l    d0,d7
  80.     bmi    main_exit
  81.  
  82.   .if 0
  83.     cmpi.l    #'conf',(256+$FC0,a0)
  84.     bne    error
  85.     cmpi.l    #'scor',(256+$156A,a0)
  86.     bne    error
  87.     cmpi.b    #'w',(256+$12E1,a0)
  88.     bne    error
  89.     cmpi.w    #'t'<<8,(256+$12E2,a0)
  90.     bne    error
  91.   .endif
  92.  
  93.     cmpi.l    #(OPCODE_PEA_DPC<<16)+(($12E1-($14CE+2)).and.$FFFF),(256+$14CE,a0)
  94.     bne    error
  95.     cmpi.l    #(OPCODE_PEA_DPC<<16)+(($FC0-($14CE+4+2)).and.$FFFF),(256+$14CE+4,a0)
  96.     bne    error
  97.  
  98.     cmpi.l    #(OPCODE_PEA_DPC<<16)+(($12E1-($19D2+2)).and.$FFFF),(256+$19D2,a0)
  99.     bne    error
  100.     cmpi.l    #(OPCODE_PEA_DPC<<16)+(($156A-($19D2+4+2)).and.$FFFF),(256+$19D2+4,a0)
  101.     bne    error
  102.  
  103.     move.l    #(OPCODE_BRA_W<<16)+(($1560-($14CE+2)).and.$FFFF),(256+$14CE,a0)
  104.     move.l    #(OPCODE_BRA_W<<16)+(($1AE4-($19D2+2)).and.$FFFF),(256+$19D2,a0)
  105.  
  106.     IS68000    d0
  107.     beq    @f
  108.     moveq.l    #3,d1
  109.     IOCS    _SYS_STAT
  110. @@:
  111.  
  112.     move.l    d7,-(sp)
  113.     move.w    #4,-(sp)
  114.     DOS    _EXEC
  115.     addq.l    #6,sp
  116.     move.l    d0,d7
  117.  
  118. main_exit:
  119.     move.w    d7,-(sp)
  120.     DOS    _EXIT2
  121.  
  122. error:
  123.     pea.l    (dummy_exit,pc)
  124.     move.w    #4,-(sp)
  125.     DOS    _EXEC
  126.     addq.l    #6,sp
  127.     pea.l    (m_error,pc)
  128.     DOS    _PRINT
  129.     addq.l    #4,sp
  130.     moveq.l    #1,d7
  131.     bra    main_exit
  132.  
  133. dummy_exit:
  134.     DOS    _EXIT
  135.  
  136. filename:    .dc.b    'C_SITE.X',0
  137. m_error:    .dc.b    'C_SITE.X のバージョンが違います',13,10,0
  138.     .even
  139.  
  140.     .bss
  141.     .even
  142.         .ds.l    2
  143. execparam:    .ds.b    1024
  144. execname:    .ds.b    256
  145.     .even
  146.         .ds.b    1024*64
  147. stack_top:
  148.  
  149. ;----------------------------------------------------------------
  150. ;文字列をコピーする
  151. ;<a0.l:コピー先
  152. ;<a1.l:コピーする文字列
  153. ;>a0.l:コピー先の文字列の末尾の0の位置
  154. ;>a1.l:コピーした文字列の末尾の0の次の位置
  155.     .text
  156. strcpy::
  157. @@:    move.b    (a1)+,(a0)+
  158.     bne    @b
  159.     subq.l    #1,a0
  160.     rts
  161.  
  162. ;----------------------------------------------------------------
  163.     .end    exec_entry
  164.